package com.zw.a.basic.a10.demo03_listiterator;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

//案例: 演示列表迭代器的入门.
/*
    ListIterator简介
        概述:
            它是Iterator迭代器的子类(接口), 它主要是作用于List体系的, 它叫: 列表迭代器.
         涉及到的成员方法:
            List集合中的成员方法
                public ListIterator<E> listIterator();  //根据集合对象获取其对应的列表迭代器对象.
            ListIterator中的成员方法:
                hasNext();  判断集合中是否有下一个元素.
                next();     有就获取集合中的下一个元素.
                hasPrevious();  判断集合中是否有上一个元素.
                previous();     有就获取集合中的上一个元素.
        细节:
            通过列表迭代器进行逆向遍历之前, 必须先进行一次正向遍历.
 */
public class Demo01 {
    public static void main(String[] args) {
        //1.创建List集合, 用来存储字符串.
        List<String> list = new ArrayList<>();
        //2.往List集合中添加3个字符串值, 分别是: "hello", "world", "java".
        list.add("hello");
        list.add("world");
        list.add("java");
        //3.通过列表迭代器对List集合分别进行正向遍历和逆向遍历.
        //3.1 通过ListIterator进行正向遍历.
        ListIterator<String> lit = list.listIterator();
        while(lit.hasNext()) {
            String s = lit.next();
            System.out.println(s);
        }
        System.out.println("----------------------------");
        while(lit.hasPrevious()) {
            String s = lit.previous();
            System.out.println(s);
        }

        System.out.println(2 << 3);  //每往左移动一次, 相当于乘以 2
        System.out.println((2 << 4) - 1 );
    }
}
